모의해킹
호스트기반모의해킹_08_취약점 분석 개요
작성자 : Heehyeon Yoo|2025-11-20
# 모의해킹# 취약점# Exploit# Payload# CVE
1. 기본 개념 정의
취약점 진단은 포트/서비스 스캐닝 결과를 바탕으로, 대상 호스트에 존재하는 보안 결함(Security Flaw)을 식별하는 과정이다.
1.1 용어의 구분
- 취약점(Vulnerability): 시스템의 무결성, 기밀성, 가용성을 침해할 수 있는 설계상/구현상의 결함.
- 예: 코드 버그, 잘못된 설정(Misconfiguration).
- 익스플로잇(Exploit): 취약점을 이용하여 공격자가 의도한 동작을 수행하게 만드는 공격 코드나 절차.
- 비유: 미사일의 '추진체(Rocket)'.
- 페일로드(Payload): 시스템 침투 후 실제로 실행되는 악성 행위 코드.
- 비유: 미사일의 '탄두(Warhead)'.(예: 리버스 쉘 연결, 랜섬웨어 실행)
2. 공격과 취약점의 모호성
"버퍼 오버플로우(Buffer Overflow)"는 공격인가, 취약점인가?
- 둘 다 맞다.
- 취약점 관점: "이 프로그램은 버퍼 오버플로우 취약점을 가지고 있다."(원인)
- 공격 관점: "공격자가 버퍼 오버플로우 공격을 수행했다."(행위)
- 특히 DoS(서비스 거부)의 경우, 근본 원인(코드 버그, 자원 부족, 미들웨어 오류 등)을 특정하기 어려울 때 현상 자체를 취약점으로 기술하기도 한다.
3. 주요 취약점 유형
모의해킹에서 자주 다루는 치명적인 취약점 5가지.
3.1 원격 코드 실행(Remote Code Execution, RCE)
- 정의: 공격자가 원격에서 대상 시스템의 쉘(Shell) 명령어난 스크립트를 실행할 수 있는 취약점.
- 위험도: 최상(Critical). 시스템 장악과 직결된다.
3.2 인증 우회(Authentication Bypass)
- 정의: 정상적인 로그인 절차를 거치지 않고 사용자 또는 관리자 권한을 획득하는 취약점.
- 예시: SQL Injection을 통한 로그인 우회, 취약한 세션 관리.
3.3 정보 노출(Information Disclosure)
- 정의: 민감한 정보(소스코드, 설정 파일, 고객 데이터 등)가 인가받지 않은 사용자에게 노출되는 취약점.
- 영향: 2차 공격(RCE 등)을 위한 발판 정보(Credential)로 악용될 수 있다.
3.4 경로 탐색(Path Traversal)
- 정의: 웹 애플리케이션 등에서 디렉토리 이동 문자(
../)를 필터링하지 않아, 허용된 경로 밖의 시스템 파일(/etc/passwd등)에 접근하는 취약점.
3.5 서비스 거부(Denial of Service, DoS)
- 정의: 시스템 자원을 고갈시키거나 프로세스를 강제 종료시켜 가용성을 마비시키는 취약점.
- 실무 주의: 모의해킹 현장에서는 서비스 중단 위험 때문에 원칙적으로 금지하거나, 사전 협의된 별도의 스트레스 테스트(Stress Test) 기간에만 수행한다.
4. 인증 컨텍스트
취약점은 "누가 공격할 수 있는가?"에 따라 심각도가 달라진다.
4.1 인증된 상황(Authenticated)
- 조건: 공격자가 시스템의 유효한 계정(ID/PW)을 가지고 있어야만 악용 가능한 경우.
- 시나리오: "내부 직원"이나 "탈취된 계정"을 가정한 위협.
- 복잡도: 공격 전 계정 탈취(Credential Harvesting) 과정이 선행되어야 한다.
4.2 미인증 상황(Unauthenticated)
- 조건: 계정 없이 외부의 램덤한 공격자가 즉시 악용 가능한 경우.
- 위험도: 훨씬 더 위험함. 인터넷에 노출된 순간 누구나 공격 가능하다.
- 예: Log4Shell, MS17-010(EternalBlue) 등 역사적인 대형 사고들은 대부분
Unauthenticated RCE였다.
- 예: Log4Shell, MS17-010(EternalBlue) 등 역사적인 대형 사고들은 대부분
5. 실무에서는?
"RCE가 만능은 아니다."
- 복잡한 힙 오버플로우 RCE를 짜느라 3일을 쓰는 것보다, 단순 정보 노출로 얻은 SSH 키로 1분 만에 로그인하는 것이 더 효율적일 수 있다.
- 목표 지향적 사고: 취약점은 도구일 뿐이다. 여러 취약점(Chain)을 조합하여 최종 목표(시스템 장악, 데이터 유출)를 가장 쉽고 빠르게 달성하는 경로를 설계해야 한다.